package com.k8.common.event;


/**
 * dubbo没有一个统一的事件监听和发布的管理者，不同监听器滥用
 * 例如通过一个NotifyListener进行监听注册中心改变
 * 很奇怪，每一个Exporter都需要注册一个监听器，监听器维护exporter
 * 注册中心发生改变时，通过预设的如zookeeper，nacos提供的监听器去调用notify，就可以通知所有NotifyListener
 * 这更像是一个包装器，感觉没必要设计成监听器，没有统一的事件发布中心很奇怪。
 * */
public interface Listener {
    //每个listener有更细致的处理逻辑
    boolean canDispose(Event event);
    /**
     * {@link EventDeployer#cacheListeners}
     * {@link EventDeployer#cacheSynListeners}
     * */
    //先判定这个类型的Listener是否能处理该类型的event，如果对头判定可处理的话整个listenerList都不会去尝试处理
    boolean judgeEventType(Event event);
    void disposal(Event event);
}
